const express = require('express')
const app = express()


// 导入cors
const cors = require('cors')
app.use(cors())


// 组成解析表单数据中间件
app.use(express.urlencoded({ extended: false }))


// 路由res.cc()方法
app.use((req, res, next) => {
  res.cc = (err, status=1) => {
    res.send({
      status,
      message: err instanceof Error ? err.message : err
    })
  }
  next()
})


// 导入解析jwt
const expressJWT = require('express-jwt')
const { jwtSecretKey } = require('./config') 
app.use(expressJWT({ secret: jwtSecretKey }).unless({ path: [/^\/api\//]}))


//导入路由
const userRouter = require('./router/user')
// const Joi = require('joi')
app.use('/api', userRouter)
const userinfoRouter = require('./router/userinfo')
app.use('/my', userinfoRouter)


// 全局错误中间件
const joi = require('joi')
app.use((err, req, res, next) => {
  // 数据验证错误
  if(err instanceof joi.ValidationError) return res.cc(err)
  // 身份认证失败
  if(err.name === 'UnauthorizedError') return res.cc('身份认证失败')
  //其他错误
  res.cc(err)
})


app.listen(80, () => {
  console.log('服务器在127.0.0.1运行中。。。')
})